#ifndef METHODS_OPTIONS_PANEL_H
#define METHODS_OPTIONS_PANEL_H

#include <QWidget>
#include <QtGui>
#include <QObject>
#include <iostream>

#include "defines/global.h"

class MethodsOptionsPanel : public QWidget {
	Q_OBJECT

    public:
        MethodsOptionsPanel(QWidget * = 0);
        ~MethodsOptionsPanel(){};

        void changeLayout(unsigned int);

        double getImplicitJacobiThreshold() {return implicitJacobiThreshold;};
        int getImplicitJacobiMaxIteration() {return implicitJacobiMaxIteration;};

        double getImplicitSORThreshold() {return implicitSORThreshold;};
        double getImplicitSORRelaxation() {return implicitSORRelaxation;};
        int getImplicitSORMaxIteration() {return implicitSORMaxIteration;};

        double getImprovedVerletEta() {return improvedVerletEta;};

    signals:
        void updateImplicitJacobiThreshold();
        void updateImplicitJacobiMaxIteration();

        void updateImplicitSORThreshold();
        void updateImplicitSORRelaxation();
        void updateImplicitSORMaxIteration();

        void updateImprovedVerletEta();

    private slots:
        void changeImplicitJacobiThreshold(double _value) {implicitJacobiThreshold = _value; emit updateImplicitJacobiThreshold();};
        void changeImplicitJacobiMaxIteration(int _value) {implicitJacobiMaxIteration = _value; emit updateImplicitJacobiMaxIteration();};

        void changeImplicitSORThreshold(double _value) {implicitSORThreshold = _value; emit updateImplicitSORThreshold();};
        void changeImplicitSORRelaxation(double _value) {implicitSORRelaxation = _value; emit updateImplicitSORRelaxation();};
        void changeImplicitSORMaxIteration(int _value) {implicitSORMaxIteration = _value; emit updateImplicitSORMaxIteration();};

        void changeImprovedVerletEta(double _value) {improvedVerletEta = _value; emit updateImprovedVerletEta();};

    private:
        double implicitJacobiThreshold;
        int implicitJacobiMaxIteration;

        double implicitSORThreshold;
        double implicitSORRelaxation;
        int implicitSORMaxIteration;

        double improvedVerletEta;
};

void remove(QLayout *);

#endif
